package cc.aiee.chinapay.model;

import cc.aiee.core.interfaces.PayJsonBeanInterface;
import cc.aiee.core.kit.KitJson;
import lombok.Data;
import lombok.experimental.Accessors;

@Data
@Accessors(chain = true)
public class ChinaPayRefundModel implements PayJsonBeanInterface {

	/**
	 * 版本号 <br>
	 * 认证支付和快捷支付： 20150922 其余：20140728
	 */
	private String Version = "20140728";

	/**
	 * 接入类型<br>
	 * 0：商户身份接入（默认） 1：机构身份接入
	 */
	private String AccessType="0";
	/**
	 * 接入机构号<br>
	 * 由 ChinaPay 分配 AccessType=1 时，必填
	 */
	private String InstuId;
	/**
	 * 收单机构号
	 */
	private String AcqCode;
	/**
	 * 商户号
	 */
	private String MerId;
	/**
	 * 商户订单号
	 */
	private String MerOrderNo;
	/**
	 * 商户交易日期 <br>
	 * 商户提交交易的日期，格 式为 YYYYMMDD，例如 交易日期为 2015 年 1 月 2 日，则值为 20150102
	 */
	private String TranDate;
	/**
	 * 商户交易时间 <br>
	 * 商户提交交易的时间，格 式为 HHMMDD，例如交 易时间 10 点 01 分 22 秒， 则值为 100122
	 */
	private String TranTime;

	/**
	 * 原始交易订单号<br>
	 * 必填: 是
	 */
	private String OriOrderNo;
	/**
	 * 原始商户交易 日期 <br>
	 * 必填: 是
	 */
	private String OriTranDate;
	/**
	 * 退款金额 <br>
	 * 必填 : 退款时必填;
	 */
	private String RefundAmt;
	/**
	 * 订单金额 <br>
	 * 单位：分
	 */
	private String OrderAmt;
	/**
	 * 交易类型 <br>
	 * 
	 * <li>0202 预授权完成</li>
	 * <li>0203 预授权撤销</li>
	 * <li>0204 预授权完成撤销</li>
	 * <li>0401 退款交易</li>
	 * <li>0402 退款撤销</li>
	 * <li>0403 消费撤销</li>
	 * <li>9908 通知分账</li>
	 */
	private String TranType;
	/**
	 * 业务类型 <br>
	 * 固定值：0001
	 */
	private String BusiType = "0001";
	/**
	 * 商户后台通知 地址 <br>
	 * 用来接收交易结果后台通 知的地址
	 */
	private String MerBgUrl;
	/**
	 * 交易币种 <br>
	 * 符合 ISO4217 标准的的货 币代码，默认为人民币：CNY
	 */
	private String CurryNo;
	/**
	 * 分账类型 <br>
	 * 商户提交分账类交易时， 必填 取值范围： 0001 实时分账 0002 延时分账
	 */
	private String SplitType;
	/**
	 * 分账方式 <br>
	 * 商户提交分账类交易时， 必填 取值范围： 0 按金额分账 1 按比例分账
	 */
	private String SplitMethod;
	/**
	 * 分账信息 <br>
	 * 商户提交分账类交易时， 必填
	 */
	private String MerSplitMsg;
	/**
	 * 商户私有域 <br>
	 * 必填:否<br>
	 * 商 户 自 定 义 填 写 ， ChinaPay 会原样返回
	 */
	private String MerResv;
	/**
	 * 交易扩展域 <br>
	 * JSON格式填写
	 */
	private String TranReserved;

	/**
	 * 风控数据 <br>
	 * Json 格式，填写后进行 BASE64 编码，编码后采 用 RSA 加密
	 */
	private String RiskData;
	/**
	 * 签名 <br>
	 * 商户报文签名信息，报文 中的所有字段都参与签名 （Signature 除外）
	 */
	private String Signature;

	@Override
	public String toJson() {
		return KitJson.toJSONString(this);
	}

	@Override
	public String toJson(boolean prettyFormat, boolean ignoreNull) {
		return KitJson.toJSONString(this, prettyFormat, ignoreNull);
	}

}
